const webpackConfig = require('./webpack.config');

const path = require('path');
/**
 * 时间戳转日期
 * @param stamp
 * @param type 1. yyyy-mm-dd  2.yyyy-mm-dd h:minute:second
 * @returns {string}
 */
const formatDate = (stamp, type = 2) => {
  function format(par) {
    return par < 10 ? '0' + par : par;
  }
  var str = '';
  let date = new Date(stamp);
  var year = date.getFullYear();
  var month = format(date.getMonth() + 1);
  var day = format(date.getDate());
  var hours = format(date.getHours());
  var minutes = format(date.getMinutes());
  var seconds = format(date.getSeconds());
  if (type == 1) {
    str = year + '-' + month + '-' + day;
  } else {
    str = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
  }
  return str;
};

function resolve(dir) {
  return path.join(__dirname, dir);
}


module.exports = {
  // 关闭lint
  lintOnSave: false,
  publicPath: './', // publicPath,
  // css在所有环境下，都不单独打包为文件。这样是为了保证最小引入（只引入js）
  css: {
    extract: false,
  },
  // css: {
  //     // 是否使用css分离插件 ExtractTextPlugin
  //     extract: true,
  //     // 开启 CSS source maps?
  //     sourceMap: false,
  //     // css预设器配置项
  //     loaderOptions: {},
  //     // 启用 CSS modules for all css / pre-processor files.
  //     requireModuleExtension: true
  // },

  configureWebpack: webpackConfig,
  chainWebpack: (config) => {
    // console.log("zrx=======config", config.module);

    // config.module
    //     .rule("images")
    //     .pre()
    //     .use("url-loader")
    //     .loader("url-loader")
    //     .tap(options => Object.assign(options, { limit: 1, name: "[hash].[ext]" }));

    //设置图片不转base64格式  图片少 且对图片质量要求高
    const imagesRule = config.module.rule('images');
    imagesRule.uses.clear(); //清除原本的images loader配置
    imagesRule
      .test(/\.(jpg|gif|png)$/)
      .exclude.add(path.join(__dirname, '../node_modules')) //去除node_modules里的图片转base64配置
      .end()
      .use('url-loader')
      .loader('url-loader')
      .options({
        name: '[hash].[ext]',
        limit: 500,
        outputPath: 'img'
      });

    config.module
      .rule('svg')
      .exclude.add(resolve('/src/assets/icons'))
      .end()
      .use('file-loader')
      .loader('file-loader')
      .options({
        name: '[hash].[ext]',
        limit: 500,
        outputPath: 'img',
      })
      .end();
    config.module
      .rule('icons')
      .test(/\.svg$/)
      .include.add(resolve('/src/assets/icons'))
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        name: '[hash].[ext]',
        outputPath: 'img',
        symbolId: 'icon-[name]',
      })
      .end();
    // 定义一个新的webpack模块规则，命名为md
    config.module.rule('md')
      // 通过.test()方法，指定这个规则应该匹配哪些文件
      // 这个规则将应用于所有以.md结尾的文件，即Markdown文件
      .test(/\.md/)
      // 使用vue-loader来处理Markdown文件
      .use('vue-loader')
      .loader('vue-loader')
      .end()
      // 指定vue-markdown-loader来处理Markdown文件
      .use('vue-markdown-loader')
      // 使用vue-markdown-loader包中的markdown-compiler模块来处理Markdown文件
      .loader('vue-markdown-loader/lib/markdown-compiler')
      // raw: true以原始字符串的形式处理Markdown内容，不进行HTML转义等处理。
      .options({
        raw: true
      })
    config.plugin('html').tap((args) => {
      const date = formatDate(new Date().getTime());
      args[0].createDate = date;
      return args;
    });
  },
  // filenameHashing: true, //文件hash
  devServer: {
    contentBase: './',
    compress: false,
    proxy: {
      "": {
        // target: 'http://172.16.161.63:8001',
        target: 'http://172.16.201.47:8001', //
        // secure: true,  // 如果是https接口，需要配置这个参数
        changeOrigin: true,
        pathRewrite: {},
      },

    },
  },
};